//
// Created by yonghu0 on 25-10-19.
//

#ifndef USERLIST_H
#define USERLIST_H

#include <jsoncpp/json/json.h>
#include <unordered_map>

enum Role
{
    VISITOR = 1,
    ORDINARY_USER = 3,
    ADMINISTRATOR = 5
};

class UserList
{
public:
    static UserList *GetInstance();

    Json::Value RegisterUser(Json::Value registerjson);
    Json::Value LoginUser(Json::Value loginjson);
    Json::Value SelectUserInfo(Json::Value selectjson);
    Json::Value UpdateUser(Json::Value updatejson);
    Json::Value GetUserUpdateInfo(Json::Value getjson);
    Json::Value GetUserlistInfo(Json::Value getjson);
    Json::Value DeleteUser(Json::Value deletejson);
    Json::Value RankUser(Json::Value rankjson);
    Json::Value TokenLoginUser(Json::Value loginjson);
    bool UpdateUserProblemInfo(Json::Value updatejson);

    bool InitUserAuthority();
    int GetUserAuthority(Json::Value &json);

    bool IsOrdinaryUser(Json::Value &json);
    bool IsAuthor(Json::Value &json);
    bool IsAdministrator(Json::Value &json);

private:
    UserList();
    ~UserList();

    std::unordered_map<int64_t, int> m_user_authority_map;
};


#endif //USERLIST_H
